package com.zw.mes.module.assemble.mapper;


import com.zw.mes.entity.asse.HalfStore;
import com.zw.mes.entity.shipments.AsseHalfStoreRecord;
import com.zw.mes.module.assemble.entity.AsseAssemblyBuy;
import com.zw.mes.module.assemble.entity.AsseAssemblyMake;
import com.zw.mes.module.assemble.entity.AsseAssemblySheet;
import com.zw.mes.module.assemble.model.MakeListModel;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

/**
 * @Description:
 *
 * @Author: China.wsg
 * @Date: 2021/05/06 14:15
 */
public interface AssMakeMapper {

    /** 装配派工单查询列表（排除类型为‘自动化’数据） */
    List<AsseAssemblySheet> findAssemblySheetByQuery(AsseAssemblySheet assemblySheet);

    /** 制作件列表 */
    List<AsseAssemblyMake> findAsseAssemblyMakeList(AsseAssemblyMake assemblyMake);

    /** 外购件列表 */
    List<AsseAssemblyBuy> findAsseAssemblyBuyList(Integer sheetId);

    /** 装配零件信息 */
    List<AsseAssemblyMake> findMakeChooseList(HalfStore halfStore);

    /** 添加装配零件信息 */
    int insertAssemblyMake(AsseAssemblyMake assemblyMake);

    /** 删除装配零件信息 */
    int deleteAssemblyMake(String arrIds);

    /** 制作件被提交数量 根据make.id集合 */
    Integer getMakeCommitCountByMakeIds(String arrIds);

    /** 根据主单ID，删除外购件明细 */
    int deleteAssemblyBuyBySheetId(Integer sheetId);

    /** 根据主单ID，删除制作件明细 */
    int deleteAssemblyMakeBySheetId(Integer sheetId);

    /** 派工领料计划列表 */
    List<MakeListModel> findAsseAssemblyMakeListByQuery(MakeListModel makeListModel);

    /** 修改装配零件提交状态 */
    int updateAssemblyMakeStatus(@Param("arrIds") String arrIds,@Param("status") Integer status,@Param("commitDate") Date commitDate);

    /** 库存出库不足数量 根据制作件Id集合 */
    Integer getMakeCommitMinusCountByMakeIds(String arrIds);

    /** 库存出库不足数量 根据装配派工单Id */
    Integer getMakeCommitMinusCountBySheetId(Integer sheetId);

    /** 半成品库数量减少出库 */
    int updateMinusHalfStore(String arrIds);

    /** 插入出库记录 */
    int insertHalfStoreRecord(@Param("arrIds") String arrIds, @Param("storageRegisterCode") String storageRegisterCode);

    /** 半成品库数量增加出库数量 */
    int updatePlusHalfStore(String arrIds);

    /** 插入出库红冲记录 */
    int insertHalfStoreRecordRed(@Param("arrIds") String arrIds, @Param("storageRegisterCode") String storageRegisterCode);

    /** 取得待插入半成品出入库记录信息 */
    AsseHalfStoreRecord findInsertHalfStoreRecordInfoByMakeId(Integer makeId);

    /** 取得要提交的制作件Id集合 */
    List<Integer> findNotCommitMakeIdListBySheetId(Integer sheetId);

    /** 取得制作件被提交数量 根据派工单Id */
    Integer getMakeCommitCountBySheetId(Integer sheetId);

    /** 撤销并删除装配件数据 */
    int updateCancelAndDelMake(Integer id);

    /** 更新半成品库存在库数量 */
    int updateHalfStoreNum(@Param("halfStoreId") Integer halfStoreId,@Param("num") Integer num);
}
